package sorting2;

public class BidirectionalBubbleSort {

	public int[] bidirectionalBubbleSort(int[] array) {
		int ultimoTermo = array.length - 1;
		int primeiroTermo = 0;

		while ( primeiroTermo < ultimoTermo ) {

			for ( int i = primeiroTermo; i < ultimoTermo; i++ ) {
				if (array[i] > array[i+1]) {
					array = swap(array, i+1, i);
				}

			}

			ultimoTermo --;

			for ( int j = ultimoTermo; j >= primeiroTermo+1; --j) {
				if (array[j] < array[j-1]) {
					array = swap(array, j, j-1);
				}

			}

			primeiroTermo ++;
		}
		return array;
	}

	private int[] swap(int[] array, int menor, int maior){
		int temporario = array[maior];
		array[maior] = array[menor];
		array[menor] = temporario;

		return array;
	}

}